package controller;

import java.io.IOException;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import session.FachadaSession;

import dto.AlumnoDTO;
import dto.UniversidadDTO;
import experto.ExpertoLogin;
@WebServlet(urlPatterns="/login/*")
public class Login extends Controller {

	private static final long serialVersionUID = -2202800729235003960L;
	
	private ExpertoLogin experto;
	/*Constantes de metodos por URI
	 * 
	 * */
	private static final String INICIALIZAR_LOGIN = "inicializarLogin";
	private static final String LOGIN = "login";
	private static final String LOGIN_CON_UNIVERSIDAD = "loginConUniversidad";
	private static final String GET_UNIVERSIDADES = "getUniversidades";
	private static final String PARAM_UNIVERSIDAD = "universidad";
	
	@Override
	protected void crearExperto() {
		if(experto== null){
			experto = new ExpertoLogin();
		}
	}

	@Override
	protected Object procesarRequest(String metodo,HttpServletRequest request,HttpServletResponse response) throws IOException {
		Object respuesta = null;
		switch (metodo) {
		case INICIALIZAR_LOGIN:
			inicializarLogin(request,response);
			break;
		case LOGIN:
			login(request, response);
			break;
		case LOGIN_CON_UNIVERSIDAD:
			loginConUniversidad(request, response);
			break;
		case GET_UNIVERSIDADES:
			respuesta = experto.getUniversidades();
			break;
		default:
			break;
		}
		return respuesta;
	}
	
	
	/**
	 * inicializa el login
	 * @param codigoUniversidad
	 * @return
	 * @throws IOException 
	 */
	private void inicializarLogin(HttpServletRequest request,HttpServletResponse response) throws IOException {
		String codigoUniversidad = request.getParameter(PARAM_UNIVERSIDAD);
		if(codigoUniversidad!=null && !codigoUniversidad.equals("")){
			FachadaSession.getInstance().setCodUniversidad(request,codigoUniversidad);
			response.sendRedirect("/disenio/site/login.html");
		}else{
			response.sendRedirect("/disenio/site/loginConUniversidad.html");
		}
	}
	/**
	 * login
	 * @param legajo
	 * @return
	 */
	private void login(HttpServletRequest request,HttpServletResponse response) throws IOException {
		String legajo = request.getParameter("legajo");
		String codUniversidad = FachadaSession.getInstance().getCodUniversidad(request);
		if(codUniversidad!=null && !codUniversidad.trim().equals("")){
			if(legajo!=null && !legajo.trim().equals("") ){
				if(experto.login(legajo, codUniversidad)){
					FachadaSession.getInstance().setLegajoAlumno(request, legajo);
					response.sendRedirect("/disenio/site/listarProyectos.html");
				}else{
					FachadaSession.getInstance().removeCodUniversidad(request);
					response.setStatus(400);
				}
			}else{
				response.setStatus(400);
			}
		}else{
			response.sendRedirect("/disenio/site/loginConUniversidad.html");
		}
		
	}
	
	/**
	 * login incluyendo la universidad
	 * @param legajo
	 * @param codigo de la universidad
	 * @return
	 */
	private void loginConUniversidad(HttpServletRequest request,HttpServletResponse response) throws IOException {
		String codUniversidad = request.getParameter("universidad");
		FachadaSession.getInstance().setCodUniversidad(request, codUniversidad);
		login(request, response);
	}
}
